home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
X User Tools
/
X User Tools (O'Reilly and Associates)(1994).ISO
/
sun4c
/
archive
/
tcltk.z
/
tcltk
/
man
/
catn
/
uplevel.n
< prev
next >
Wrap
Text File
|
1994-09-20
|
3KB
|
133 lines
uplevel(n) Tcl Built-In Commands
_________________________________________________________________
NAME
uplevel - Execute a script in a different stack frame
SYNOPSIS
uplevel ?_l_e_v_e_l? _a_r_g ?_a_r_g ...?
_________________________________________________________________
DESCRIPTION
All of the _a_r_g arguments are concatenated as if they had
been passed to concat; the result is then evaluated in the
variable context indicated by _l_e_v_e_l. Uplevel returns the
result of that evaluation.
If _l_e_v_e_l is an integer then it gives a distance (up the pro-
cedure calling stack) to move before executing the command.
If _l_e_v_e_l consists of # followed by a number then the number
gives an absolute level number. If _l_e_v_e_l is omitted then it
defaults to 1. _L_e_v_e_l cannot be defaulted if the first _c_o_m_-
_m_a_n_d argument starts with a digit or #.
For example, suppose that procedure a was invoked from top-
level, and that it called b, and that b called c. Suppose
that c invokes the uplevel command. If _l_e_v_e_l is 1 or #2 or
omitted, then the command will be executed in the variable
context of b. If _l_e_v_e_l is 2 or #1 then the command will be
executed in the variable context of a. If _l_e_v_e_l is 3 or #0
then the command will be executed at top-level (only global
variables will be visible).
The uplevel command causes the invoking procedure to disap-
pear from the procedure calling stack while the command is
being executed. In the above example, suppose c invokes the
command
uplevel 1 {set x 43; d}
where d is another Tcl procedure. The set command will
modify the variable x in b's context, and d will execute at
level 3, as if called from b. If it in turn executes the
command
uplevel {set x 42}
then the set command will modify the same variable x in b's
context: the procedure c does not appear to be on the call
stack when d is executing. The command ``info level'' may
be used to obtain the level of the current procedure.
Uplevel makes it possible to implement new control con-
structs as Tcl procedures (for example, uplevel could be
Tcl 1
uplevel(n) Tcl Built-In Commands
used to implement the while construct as a Tcl procedure).
KEYWORDS
context, stack frame, variables
Tcl 2